package cn.well.cloud.common;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import cn.stylefeng.roses.core.util.HttpContext;
import cn.stylefeng.roses.core.util.ToolUtil;
import cn.well.cloud.exception.TipsException;
import cn.well.cloud.exception.enums.BizExceptionEnum;
import cn.well.cloud.exception.enums.TipsExceptionEnum;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;


public class RestPageFactory {
    
    /**
     * 每页大小的param名称
     */
    private static final String PAGE_SIZE_PARAM_NAME = "pageSize";

    /**
     * 第几页的param名称
     */
    private static final String PAGE_NO_PARAM_NAME = "pageNo";
    
    
    private static  int pageSize = 20;//每页多少条数据
    private static  int pageNo = 1;//第几页
	/**
	 * 创建api默认分页参数
	 * @return
	 *1
	 *2019年8月9日
	 */
    public static Page defaultPage() {
        Map<String, String> map = HttpContext.getRequestParameters();
        HttpServletRequest request = HttpContext.getRequest();
        if(ToolUtil.isOneEmpty(request.getParameter(PAGE_NO_PARAM_NAME))){
        	throw new TipsException(TipsExceptionEnum.REQUEST_PAGE_NULL);
        }
        pageNo = Integer.valueOf(request.getParameter(PAGE_NO_PARAM_NAME));
        
        if(ToolUtil.isNotEmpty(request.getParameter(PAGE_SIZE_PARAM_NAME))){
            pageSize = Integer.valueOf(request.getParameter(PAGE_SIZE_PARAM_NAME));
        }
        return new Page(pageNo, pageSize);
    }
    
    /**
     * 创建api 自定义分页参数
     * @param pageSize 每页多少条数据
     * @return
     * wison
     * 2019年8月16日
     */
    public static Page selfPage(long pageSize) {        
        return new Page(pageNo, pageSize);
    }
    
    /**
     * 创建api 自定义分页参数
     * @param pageNo 当前页数
     * @return
     * wison
     * 2019年8月16日
     */
    public static Page selfPageNo(long pageNo) {        
        return new Page(pageNo, pageSize);
    }
    
    /**
     * 创建api 自定义分页参数
     * @param pageNo 当前页
     * @param pageSize每页多少条数据
     * @return
     * wison
     * 2019年8月16日
     */
    public static Page selfPage(long pageNo, long pageSize) {        
        return new Page(pageNo, pageSize);
    }
}
